package com.example.httpdemo.controller;

import com.example.common.global.BaseController;
import com.example.common.global.CommonResponse;
import com.example.httpdemo.pojo.DoorVO;
import org.springframework.web.bind.annotation.*;

/**
 * @author Aaron
 * @since 2021/9/6 19:24
 * <p>描述：</p>
 */
@RestController
@RequestMapping("/param")
public class ParamController extends BaseController {

    @RequestMapping(path = "/get", method = RequestMethod.GET)
    public CommonResponse<?> get(DoorVO doorVO) {
        // 只能接收到 Url 的 Param 中的参数。body 中无论以什么类型发送均无法接收
        return success(doorVO, "RequestMapping Get Success!");
    }

    @GetMapping(path = "/getRequestBody")
    public CommonResponse<?> getRequestBody(@RequestBody DoorVO doorVO) {
        // 只能接收 Body 中类型 application/json 的数据
        return success(doorVO, "RequestMapping Get Success!");
    }

    @RequestMapping(path = "/post", method = RequestMethod.POST)
    public CommonResponse<?> post(DoorVO doorVO) {
        // 可接收 Param 参数，以及 Body 中 x-www-form-urlencoded 的数据，不能接收 body 中 application/json 数据
        return success(doorVO, "RequestMapping Post Success!");
    }

    @PostMapping(path = "/postRequestBody")
    public CommonResponse<?> postRequestBody(@RequestBody DoorVO doorVO) {
        // 只能接收 Body 中类型 application/json 的数据
        return success(doorVO, "PostMapping Success!");
    }

    @RequestMapping("/noMethod")
    public CommonResponse<?> noMethod(DoorVO doorVO) {
        // Get 请求下，只能接收到 Param 中的参数
        // Post 请求下，可接收 Param 参数，以及 Body 中 x-www-form-urlencoded 的数据
        return success(doorVO, "noMethod Success!");
    }

    @RequestMapping("/noMethodRequestBody")
    public CommonResponse<?> noMethodRequestBody(@RequestBody DoorVO doorVO) {
        // 无论 Get/Post 请求，只能接收到 body 中 application/json 数据
        return success(doorVO, "noMethod Success!");
    }

}
